/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.Conexao;
import DAO.EditoraDao;
import bean.Editora;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author jorge
 */
@ManagedBean
@SessionScoped
public class EditoraBean implements Serializable {

    /**
     * Creates a new instance of EditoraBean
     */
    public EditoraBean() {
        this.editora = new Editora();
        this.editoraDao = new EditoraDao();
        
    }
    
    public void novaEditora(){
        this.editora = new Editora();
        this.carregarEditoras();
    }

    public EditoraDao getEditoraDao() {
        return editoraDao;
    }

    public void setEditoraDao(EditoraDao editoraDao) {
        this.editoraDao = editoraDao;
    }

    public Editora getEditora() {
        return editora;
    }

    public void setEditora(Editora editora) {
        this.editora = editora;
    }

    public void setEditoras(DataModel<Editora> editoras) {
        this.editoras = editoras;
    }

    public PreparedStatement getPs() {
        return ps;
    }

    public void setPs(PreparedStatement ps) {
        this.ps = ps;
    }

    public boolean isSucesso() {
        return sucesso;
    }

    public void setSucesso(boolean sucesso) {
        this.sucesso = sucesso;
    }

    public Conexao getConexao() {
        return conexao;
    }

    public void setConexao(Conexao conexao) {
        this.conexao = conexao;
    }
    
    public List<Editora> getListaEditoras() {
        if(listaEditoras == null){
            this.carregarEditoras();
        }
        return listaEditoras;
    }

    public void setListaEditoras(List<Editora> listaEditoras) {
        this.listaEditoras = listaEditoras;
    }
    
    
    public String cadastroEditora()
    {
        String resultado = "/cadastros/acaoErro";
        
        editoraDao = new EditoraDao();
        
        System.out.println("BeanGerenciavel - Cadastro: "+editora.getNome());
      
        
        sucesso = editoraDao.cadastrarEditora(editora);
        
        if(sucesso)
        {
            this.novaEditora();
            return "/cadastros/acaoSucesso";
        }
        
        return resultado;
    }
    
    public void selecionar()
    {
        editora = editoras.getRowData();
    }

    public DataModel<Editora> getEditoras() {
        if(this.editoras == null){
            this.carregarEditoras();
        }
        return editoras;
    }
    
    public String removerEditora() {
        String resultado = "/cadastros/acaoErro";
        editoraDao = new EditoraDao();
        sucesso = editoraDao.removerEditora(editora);

        if (sucesso) {
            return "/cadastros/acaoSucesso";
        }

        return resultado;
    }
    
    public String editarEditora()
    {
        String resultado = "/cadastros/acaoErro";
        
        editoraDao = new EditoraDao();
        System.out.println(editora.getId());
        System.out.println(editora.getNome());
       
        sucesso = editoraDao.alterarEditora(editora);
        
        if(sucesso)
        {
            resultado = "/cadastros/acaoSucesso";
        }
        
        return resultado;
    }
    
    public void carregarEditoras(){
        listaEditoras = editoraDao.listarEditora();
        editoras = new ListDataModel<Editora>(listaEditoras);
    }
   
    
    private EditoraDao editoraDao;
    private Editora editora;
    private DataModel<Editora> editoras;
    private List<Editora> listaEditoras;
    private PreparedStatement ps;
    private boolean sucesso = false;
    private Conexao conexao;
}
